/* 
  联合类型（Union Types）可以通过管道(|)将变量设置多种类型，
  赋值时可以根据设置的类型来赋值。
*/

let val: string | number
val = 666
console.log('数字为：', val)
val = '联合类型'
console.log('字符串为：', val)
console.log('-------------------')

// 函数中参数为联合类型
function sayHi(name: string | string[]) {
  if (typeof name == 'string') {
    console.log(name)
  } else {
    let i: number
    for (i = 0; i < name.length; i++) {
      console.log(name[i])
    }
  }
}
console.log(sayHi('zhansan'))
console.log(sayHi(['zhansan', 'lisi', 'wangwu']))
console.log('-------------------')

// 联合类型数组
let arr: number[] | string[]
let k: number
arr = [1, 2, 3]
console.log('**数字数组**')
for (k = 0; k < arr.length; k++) {
  console.log(arr[k])
}

arr = ['a', 'b', 'c']
console.log('**字符串数组**')
for (k = 0; k < arr.length; k++) {
  console.log(arr[k])
}
